home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / win_os2.swg / 0049_TimeSlices in Win-OS2-DesqView-TopView.pas < prev    next >
Pascal/Delphi Source File  |  1994-11-30  |  2KB  |  108 lines

  1. { other thing: Can I Detect: -OS/2? -Windows? -DeskView?
  2.  
  3. Try this:
  4. }
  5. Unit TimeTask;
  6.  
  7. INTERFACE
  8.  
  9. {
  10.   TaskRec.OS
  11.   0 : No MultiTasking
  12.   1 : Windows
  13.   2 : OS/2
  14.   3 : DESQview
  15.   4 : TopView
  16. }
  17.  
  18. Type
  19.   TaskRec = record
  20.     OS      : Word;
  21.     Version : Word; {writeln('Version ',hi(Version), '.', lo(Version) );}
  22.     Delay   : Word;
  23.   end;
  24.  
  25. Const
  26.   Task    : TaskRec = (
  27.     OS      : 0;
  28.     Version : 0;
  29.     Delay   : 100
  30.   );
  31.  
  32. Procedure TimeSlice;
  33. Procedure InitMulti;
  34.  
  35. IMPLEMENTATION
  36.  
  37. uses dos;
  38.  
  39. Procedure InitMulti; Assembler;
  40. Asm
  41.   mov  Task.OS, 0
  42.   mov  Task.Version, 0
  43.   mov  Ah, 30h
  44.   mov  Al, 01h
  45.   int  21h
  46.   cmp  Al, 20
  47.   je   @OS2
  48.   mov  Ax, 160Ah
  49.   int  2Fh
  50.   cmp  Ax, 0
  51.   je   @Windows
  52.   mov  Ax, 1022h
  53.   mov  Bx, 0000h
  54.   int  15h
  55.   cmp  Bx, 0
  56.   jne  @DESQview
  57.   mov  Ah, 2Bh
  58.   mov  Al, 01h
  59.   mov  Cx, 4445h
  60.   mov  Dx, 5351h
  61.   int  21h
  62.   cmp  Al, $FF
  63.   jne  @TopView
  64.   jmp  @Fin
  65. @Windows:
  66.   Mov  Task.OS, 1
  67.   Mov  Task.Version, BX
  68.   jmp  @Fin
  69. @OS2:
  70.   Mov  Task.OS, 2
  71.   Mov  Bh, Ah
  72.   Xor  Ah, Ah
  73.   Mov  Cl, 10
  74.   Div  Cl
  75.   Mov  Ah, Bh
  76.   Xchg Ah, Al
  77.   Mov  Task.Version, AX
  78.   jmp  @Fin
  79. @DESQview:
  80.   mov  Task.OS, 3
  81.   jmp  @Fin
  82. @TopView:
  83.   mov  Task.OS, 4
  84. @Fin:
  85. End;
  86.  
  87.  
  88. Procedure TimeSlice; Assembler;
  89. Asm
  90.   cmp  Task.OS, 0
  91.   je   @Fin
  92.   cmp  Task.OS, 1
  93.   je   @Win_OS2
  94.   cmp  Task.OS, 2
  95.   je   @Win_OS2
  96. @DV_TV:
  97.   mov  Ax, 1000h
  98.   int  15h
  99.   jmp  @Fin
  100. @Win_OS2:
  101.   mov  Ax, 1680h
  102.   int  2Fh
  103. @Fin:
  104. End;
  105.  
  106. end.
  107.  
  108.